//package com.ruoyi.quartz.task;
//
//import cn.hutool.core.date.DateField;
//import cn.hutool.core.date.DateUtil;
//import com.alibaba.fastjson.JSON;
//import com.ruoyi.common.annotation.DataSource;
//import com.ruoyi.common.constant.ScheduleConstants;
//import com.ruoyi.common.core.domain.AjaxResult;
//import com.ruoyi.common.enums.DataSourceType;
//import com.ruoyi.common.exception.job.TaskException;
//import com.ruoyi.common.utils.DateUtils;
//import com.ruoyi.framework.manager.AsyncManager;
//import com.ruoyi.framework.util.ShiroUtils;
//import com.ruoyi.quartz.controller.NewTheadController;
//import com.ruoyi.quartz.domain.SysJob;
//import com.ruoyi.quartz.mapper.CornLogMapper;
//import com.ruoyi.quartz.mapper.CustomerMapper;
//import com.ruoyi.quartz.mapper.OrderMapper;
//import com.ruoyi.quartz.mapper.SysJobMapper;
//import com.ruoyi.quartz.service.ICustomerService;
//import com.ruoyi.quartz.service.IOrderService;
//import com.ruoyi.quartz.service.ISysJobLogService;
//import com.ruoyi.quartz.service.ISysJobService;
//import com.ruoyi.quartz.util.ScheduleUtils;
//import com.ruoyi.system.domain.DTO.SysOrderDto;
//import com.ruoyi.system.domain.SysUser;
//import com.ruoyi.system.domain.vo.*;
//import com.ruoyi.system.service.IRyAdminService;
//import org.quartz.CronExpression;
//import org.quartz.Scheduler;
//import org.quartz.SchedulerException;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.scheduling.annotation.Async;
//import org.springframework.stereotype.Component;
//import org.springframework.transaction.annotation.Transactional;
//
//import java.math.BigDecimal;
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//import java.util.TimerTask;
//
///**
// * 循环次数的抢单方式
// */
//@Component("testTask")
//public class TestTask {
//    @Autowired
//    private ISysJobService jobService;
//    @Autowired
//    private IOrderService orderService;
//    @Autowired
//    private ICustomerService customerService;
//    @Autowired
//    private Scheduler scheduler;
//    @Autowired
//    private CornLogMapper cornLogMapper;
//
//    /**
//     * 定时任务核心规则
//     * 一分钟所有查询接口只能刷新200次
//     * 否则会被封号2小时
//     */
//
//    @Async("asyncServiceExecutor")
//    public void saveOrder(String jobName) throws SchedulerException {
//        long start = System.currentTimeMillis();
//        String name = Thread.currentThread().getName();
//        String main = "TestTask.execute()..." + name;
//        System.out.println(main);
//        AsyncManager.me().execute(new TimerTask() {
//            @Override
//            public void run() {
//                String name1 = Thread.currentThread().getName();
//                System.out.println(name1+"..."+name1 + "...start");
//                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
//                //添加查询日志
//                CornLog cornLog = new CornLog();
//                cornLog.setThreadName(name1);
//                cornLog.setJobName(jobName);
//                cornLog.setBusinessType("查询并下单");
//                cornLog.setOperationType("定时");
//                cornLog.setRequestDate(simpleDateFormat.format(new Date()));
//                cornLog.setRequestData(jobName);
//
//                try {
//                    getDataCreateOrder(jobName);
//                    System.out.println(name1+"--"+Thread.currentThread().getName() + "...end");
//                    long end = System.currentTimeMillis();
//                    System.out.println(name1+"..."+"总共耗时： " + (end - start)+"...成功结束");
//
//                    cornLog.setResponeDate(simpleDateFormat.format(new Date()));
//                    cornLog.setResponeData("");
//                    cornLog.setOperationName("system");
//                    cornLog.setContent(null);
//                    cornLog.setRemark("总共耗时： " + (end - start)+"...成功结束");
//                    cornLog.setCreateBy("system");
//                    //添加
//                    cornLogMapper.insertCornLog(cornLog);
//                } catch (Exception e) {
//                    e.printStackTrace();
//                    long end = System.currentTimeMillis();
//                    System.out.println(name1+"--"+"总共耗时： " + (end - start)+"...异常结束");
//
//                    cornLog.setResponeDate(simpleDateFormat.format(new Date()));
//                    cornLog.setResponeData("");
//                    cornLog.setOperationName("system");
//                    cornLog.setContent(null);
//                    cornLog.setRemark("总共耗时： " + (end - start)+"...异常结束");
//                    cornLog.setCreateBy("system");
//                    //添加
//                    cornLogMapper.insertCornLog(cornLog);
//                }
//            }
//        });
//    }
//
//
//    public void getDataCreateOrder(String jobName) throws SchedulerException {
//        SysJob job = new SysJob();
//        job = jobService.selectJobByName(jobName);
//        try {
//
//            if (job != null) {
//                OrderJobVo orderJobVo = new OrderJobVo();
//                orderJobVo = jobService.selectOrderJobVoByJobId(job.getJobId());
//                if (orderJobVo != null) {
//                    if (orderJobVo.getEndDate() != null && orderJobVo.getEndDate().trim().length() > 0) {
//                        if ("1899-12-13".equals(orderJobVo.getEndDate())) {
//                            orderJobVo.setEndDate(null);
//                        }
//                    }
//                    //判断是否执行循环
//                    if (orderJobVo.getIsFor() == 0) {//否
//                        //逻辑
//                        Boolean result = quartzOrder(orderJobVo);
//                        if (result) {
//                            //暂停定时任务
//                            jobService.pauseJob(job);
//                            OrderJobLog orderJobLog = new OrderJobLog();
//                            BeanUtils.copyProperties(job, orderJobLog);
//                            orderJobLog.setJobId(job.getJobId().toString());
//                            orderJobLog.setRemark("正常执行后进行删除");
//                            jobService.insertOrderJobLog(orderJobLog);
//                        } else {
//                            //暂停定时任务
//                            jobService.pauseJob(job);
//                        }
//                    } else if (orderJobVo.getIsFor() == 1) {
//                        //逻辑
//                        Boolean result = quartzOrder(orderJobVo);
//                        if (result) {
//                            //暂停定时任务
//                            jobService.pauseJob(job);
//                        }
//                    }
//                } else {
//                    //暂停定时任务
//                    jobService.pauseJob(job);
//                }
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            jobService.pauseJob(job);
//            OrderJobLog orderJobLog = new OrderJobLog();
//            BeanUtils.copyProperties(job, orderJobLog);
//            orderJobLog.setJobId(job.getJobId().toString());
//            orderJobLog.setRemark("程序执行异常，删除,异常：" + e.getMessage());
//            jobService.insertOrderJobLog(orderJobLog);
//        }
//    }
//
//    /**
//     * 定时执行抢单逻辑
//     *
//     * @param orderJobVo
//     * @return
//     */
//    public Boolean quartzOrder(OrderJobVo orderJobVo) throws java.text.ParseException, InterruptedException, SchedulerException {
//        List<InstantBookingVo> allData = new ArrayList<>();
//        //获取数据
//        allData = manageData(orderJobVo);
//        if (allData == null || allData.size() == 0 || allData.isEmpty()) {
//            SysJob sysJob = jobService.selectJobById(orderJobVo.getJobId());
//            if (sysJob != null) {
//                jobService.pauseJob(sysJob);
//            }
//            OrderLogVo orderLogVo = new OrderLogVo();
//            orderLogVo.setUserId(orderJobVo.getUserId());
//            orderLogVo.setLoginName(orderJobVo.getLoginName());
//            orderLogVo.setEmail(orderJobVo.getEmail());
//            orderLogVo.setPhonenumber(orderJobVo.getPhonenumber());
//            orderLogVo.setLoginIp(orderJobVo.getLoginIp());
//            orderLogVo.setLoginDate(orderJobVo.getLoginDate());
//            orderLogVo.setProductId(null);
//            orderLogVo.setPorCityId(orderJobVo.getPorCityId());
//            orderLogVo.setFndCityId(orderJobVo.getFndCityId());
//            orderLogVo.setTwentyGPCount(orderJobVo.getTwentyGPCount());
//            orderLogVo.setTwentyGPPrice("-");
//            orderLogVo.setFortyGPCount(orderJobVo.getFortyGPCount());
//            orderLogVo.setFortyGPPrice("-");
//            orderLogVo.setFortyHQCount(orderJobVo.getFortyHQCount());
//            orderLogVo.setFortyHQPrice("-");
//            orderLogVo.setTwentyRFCount(orderJobVo.getTwentyRFCount());
//            orderLogVo.setTwentyRFPrice("-");
//            orderLogVo.setFortyRQCount(orderJobVo.getFortyRQCount());
//            orderLogVo.setFortyRQPrice("-");
//            orderLogVo.setCreateBy(orderJobVo.getLoginName());
//            orderLogVo.setConfirmStatus("未确认");
//            orderLogVo.setInsertType("定时");
//            orderLogVo.setIncludeInsurance(orderJobVo.getIncludeInsurance());
//            orderLogVo.setCargoInfo(orderJobVo.getCargoInfo());
//            //发货人
//            CustomerVo shipperInfo = new CustomerVo();
//            if (orderJobVo.getShipperId() != null && !orderJobVo.getShipperId().equals("")) {
//                shipperInfo = customerService.selectCustomerVoById(orderJobVo.getShipperId());
//                if (shipperInfo != null) {
//                    orderLogVo.setShipperInfo(JSON.toJSONString(shipperInfo));
//                } else {
//                    orderLogVo.setShipperInfo("");
//                }
//            }
//            //收货人
//            CustomerVo consigneeInfo = new CustomerVo();
//            if (orderJobVo.getConsigneeId() != null && !orderJobVo.getConsigneeId().equals("")) {
//                consigneeInfo = customerService.selectCustomerVoById(orderJobVo.getConsigneeId());
//                if (consigneeInfo != null) {
//                    orderLogVo.setConsigneeInfo(JSON.toJSONString(consigneeInfo));
//                } else {
//                    orderLogVo.setConsigneeInfo("");
//                }
//            }
//            orderLogVo.setSubStatus(0);
//            orderLogVo.setRemark("未找到有效库存");
//            orderLogVo.setProductType(orderJobVo.getProductType());
//            orderService.insertOrderLogVo(orderLogVo);
//            return false;
//        }
//        //数据提交(提交订单)
//        OrderJobVo returnOrderJobVo = orderService.saveOrderList(allData.get(0), orderJobVo);
//        if (returnOrderJobVo == null) {
//            return false;
//        } else {
//            return true;
//        }
//    }
//
//
//    public List<InstantBookingVo> manageData(OrderJobVo orderJobVo) throws java.text.ParseException, InterruptedException {
//        SysJob sysJob = jobService.selectJobById(orderJobVo.getJobId());
//        //条件查询商品信息
//        SysOrderDto sysOrderDto = new SysOrderDto();
//        sysOrderDto.setPorCityId(orderJobVo.getPorCityId());
//        sysOrderDto.setFndCityId(orderJobVo.getFndCityId());
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        sysOrderDto.setStartDate(sdf.parse(orderJobVo.getStartDate() + " 00:00:00"));
//        if (orderJobVo.getEndDate() != null && orderJobVo.getEndDate().trim().length() > 0) {
//            sysOrderDto.setEndDate(sdf.parse(orderJobVo.getEndDate() + " 00:00:00"));
//        }
//        if(sysJob!=null){
//            sysOrderDto.setJobName(sysJob.getJobName());
//        }
//        //查询
//        List<InstantBookingVo> instantBookingVoList = new ArrayList<>();
//        instantBookingVoList = getOrderData(sysOrderDto, orderJobVo);
//        //循环判断符合条件的商品信息
//        if (instantBookingVoList != null && !instantBookingVoList.isEmpty() && instantBookingVoList.size() > 0) {
//            //价格转换
//            orderJobVo = changePrice(orderJobVo);
//            List<InstantBookingVo> twentyGPOkList = new ArrayList<>();
//            List<InstantBookingVo> fortyGPOkList = new ArrayList<>();
//            List<InstantBookingVo> fortyHQOkList = new ArrayList<>();
//            List<InstantBookingVo> twentyRFOkList = new ArrayList<>();
//            List<InstantBookingVo> fortyRQOkList = new ArrayList<>();
//            if (Integer.parseInt(orderJobVo.getTwentyGPCount()) > 0) {
//                //获取20GP商品
//                twentyGPOkList = getTypeData(instantBookingVoList, orderJobVo, "20GP");
//            }
//            if (Integer.parseInt(orderJobVo.getFortyGPCount()) > 0) {
//                //获取40GP商品
//                fortyGPOkList = getTypeData(instantBookingVoList, orderJobVo, "40GP");
//            }
//            if (Integer.parseInt(orderJobVo.getFortyHQCount()) > 0) {
//                //获取40HQ商品
//                fortyHQOkList = getTypeData(instantBookingVoList, orderJobVo, "40HQ");
//            }
//            if (Integer.parseInt(orderJobVo.getTwentyRFCount()) > 0) {
//                //获取20RF商品
//                twentyRFOkList = getTypeData(instantBookingVoList, orderJobVo, "20RF");
//            }
//            if (Integer.parseInt(orderJobVo.getFortyRQCount()) > 0) {
//                //获取40HQ商品
//                fortyRQOkList = getTypeData(instantBookingVoList, orderJobVo, "40RQ");
//            }
//            //数据汇总
//            List<InstantBookingVo> allData = new ArrayList<>();
//            allData = getMergeData(twentyGPOkList.size() == 0 ? null : twentyGPOkList, fortyGPOkList.size() == 0 ? null : fortyGPOkList,
//                    fortyHQOkList.size() == 0 ? null : fortyHQOkList, twentyRFOkList.size() == 0 ? null : twentyRFOkList, fortyRQOkList.size() == 0 ? null : fortyRQOkList);
//
//            return allData;
//        }
//        return null;
//    }
//
//
//    public List<InstantBookingVo> getOrderData(SysOrderDto sysOrderDto, OrderJobVo orderJobVo) throws InterruptedException, ParseException {
//        //下一分钟是否执行标识
//        Boolean isNextContinue = true;
//
//        int maxNum = 0;
//        if (orderJobVo == null || orderJobVo.getFrequency() == 0) {
//            return null;
//        } else {
//            maxNum = orderJobVo.getFrequency();
//        }
//        int pageNum = 1;
//        sysOrderDto.setPageSize(50);
//        List<InstantBookingVo> queryAllInstantBookingVoList = new ArrayList<>();
//        Boolean isCon = true;
//        int num = 0;
//        while (isCon) {
//            num++;
//            sysOrderDto.setPageNum(pageNum);
//
//            SysUser sysUser = new SysUser();
//            sysUser.setLoginName(orderJobVo.getCreateBy());
//            sysOrderDto.setSysUser(sysUser);
//            sysOrderDto.setType("定时");
//            sysOrderDto.setProductType(orderJobVo.getProductType());
//            List<InstantBookingVo> queryInstantBookingVoList = new ArrayList<>();
//            queryInstantBookingVoList = orderService.selectOrderListBak(sysOrderDto);
//            if (queryInstantBookingVoList == null) {
//                isNextContinue = true;
//            } else {
//                if (queryInstantBookingVoList.size() == 0) {
//                    Thread.sleep(500);
//                } else {
//                    isNextContinue = false;
//                    //过滤库存为0的数据
//                    List<InstantBookingVo> instantBookingVoTmpList = new ArrayList<>();
//                    for (InstantBookingVo forInstantBookingVo : queryInstantBookingVoList) {
//                        if (forInstantBookingVo.getInventoryCount() > 0) {
//                            instantBookingVoTmpList.add(forInstantBookingVo);
//                        }
//                    }
//                    if (instantBookingVoTmpList != null && !instantBookingVoTmpList.isEmpty() && instantBookingVoTmpList.size() > 0) {
//                        queryAllInstantBookingVoList.addAll(instantBookingVoTmpList);
//                    }
//                    //结束循环
//                    isCon = false;
//                }
//            }
//            //达到最大次数，中断循环
//            if (num == maxNum) {
//                isCon = false;
//            }
//        }
//
//        //此处判断是否需要在下一分钟添加定时任务
//        if (isNextContinue) {//执行
//            SysJob job = new SysJob();
//            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//            job.setJobName("抢单任务" + sdf.format(new Date()));
//            job.setJobGroup("DEFAULT");
//            job.setInvokeTarget("testTask.saveOrder('" + job.getJobName() + "')");
//            //依据当前定时任务获取下一分钟的定时任务时间
//            Date date = new Date();
//            //在时间基础上加一分钟
//            SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:00");
////            if (date.getSeconds() <= 30) {
////                date = cn.hutool.core.date.DateUtil.offset(sdf2.parse(sdf2.format(date)), DateField.MINUTE, 1);
////            } else if (date.getSeconds() > 30) {
////                date = cn.hutool.core.date.DateUtil.offset(sdf2.parse(sdf2.format(date)), DateField.MINUTE, 2);
////            } else {
//                date = cn.hutool.core.date.DateUtil.offset(sdf2.parse(sdf2.format(date)), DateField.MINUTE, 1);
////            }
//            //判断处理后的时间是否大于当前时间且小于条件截至时间
//            if (orderJobVo.getTimeLength() != 0) {
//                Date endDate = cn.hutool.core.date.DateUtil.offset(orderJobVo.getCreateTime(), DateField.MINUTE, orderJobVo.getTimeLength());
//                if (date.getTime() < endDate.getTime()) {
//                    Boolean isContinue = true;
//                    while (isContinue) {
//                        if (date.getTime() <= (new Date()).getTime()) {
//                            date = DateUtil.offset(date, DateField.MINUTE, 1);
//                        } else {
//                            isContinue = false;
//                            String corn = formatDateByPattern(date, "ss mm HH dd MM ? yyyy");
//                            job.setStatus(ScheduleConstants.Status.NORMAL.getValue());
//                            job.setConcurrent("0");
//                            job.setCronExpression(corn);
//                            int rows = orderService.insertJob(job);
//                            System.out.println("时间:" + sdf2.format(new Date()) + " 添加：" + job);
//                            if (rows > 0) {
//                                OrderJobVo updateOrderJobVo = new OrderJobVo();
//                                updateOrderJobVo.setId(orderJobVo.getId());
//                                updateOrderJobVo.setJobId(job.getJobId());
//                                updateOrderJobVo.setUpdateBy(orderJobVo.getCreateBy());
//                                Boolean update = orderService.updateOrderJobJobIdById(updateOrderJobVo);
//                                if (update) {
//                                    //创建定时任务
//                                    try {
//                                        ScheduleUtils.createScheduleJob(scheduler, job);
//                                    } catch (SchedulerException e) {
//                                        e.printStackTrace();
//                                    } catch (TaskException e) {
//                                        e.printStackTrace();
//                                    }
//                                }
//                            }
//                        }
//                    }
//                }
//            }
//        }
//
//        //过滤掉库存为0的商品
//        List<InstantBookingVo> instantBookingVoList = new ArrayList<>();
//        for (InstantBookingVo forInstantBookingVo : queryAllInstantBookingVoList) {
//            if (forInstantBookingVo.getInventoryCount() > 0) {
//                instantBookingVoList.add(forInstantBookingVo);
//            }
//        }
//        return instantBookingVoList;
//    }
//
//    public static String formatDateByPattern(Date date, String dateFormat) {
//        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
//        String formatTimeStr = null;
//        if (date != null) {
//            formatTimeStr = sdf.format(date);
//        }
//        return formatTimeStr;
//    }
//
//    /**
//     * 价格转换
//     *
//     * @param orderJobVo
//     * @return
//     */
//    public OrderJobVo changePrice(OrderJobVo orderJobVo) {
//        if (orderJobVo.getTwentyGPPriceStart() == null || orderJobVo.getTwentyGPPriceStart().equals("") || orderJobVo.getTwentyGPPriceStart().trim().length() == 0) {
//            orderJobVo.setTwentyGPPriceStart("0");
//        }
//        if (orderJobVo.getTwentyGPPriceEnd() == null || orderJobVo.getTwentyGPPriceEnd().equals("0") || orderJobVo.getTwentyGPPriceEnd().trim().length() == 0) {
//            orderJobVo.setTwentyGPPriceEnd("999999");
//        }
//        if (orderJobVo.getFortyGPPriceStart() == null || orderJobVo.getFortyGPPriceStart().equals("") || orderJobVo.getFortyGPPriceStart().trim().length() == 0) {
//            orderJobVo.setFortyGPPriceStart("0");
//        }
//        if (orderJobVo.getFortyGPPriceEnd() == null || orderJobVo.getFortyGPPriceEnd().equals("0") || orderJobVo.getFortyGPPriceEnd().trim().length() == 0) {
//            orderJobVo.setFortyGPPriceEnd("999999");
//        }
//        if (orderJobVo.getFortyHQPriceStart() == null || orderJobVo.getFortyHQPriceStart().equals("") || orderJobVo.getFortyHQPriceStart().trim().length() == 0) {
//            orderJobVo.setFortyHQPriceStart("0");
//        }
//        if (orderJobVo.getFortyHQPriceEnd() == null || orderJobVo.getFortyHQPriceEnd().equals("0") || orderJobVo.getFortyHQPriceEnd().trim().length() == 0) {
//            orderJobVo.setFortyHQPriceEnd("999999");
//        }
//        if (orderJobVo.getTwentyRFPriceStart() == null || orderJobVo.getTwentyRFPriceStart().equals("") || orderJobVo.getTwentyRFPriceStart().trim().length() == 0) {
//            orderJobVo.setFortyRQPriceStart("0");
//        }
//        if (orderJobVo.getTwentyRFPriceEnd() == null || orderJobVo.getTwentyRFPriceEnd().equals("0") || orderJobVo.getTwentyRFPriceEnd().trim().length() == 0) {
//            orderJobVo.setTwentyRFPriceEnd("999999");
//        }
//        if (orderJobVo.getFortyRQPriceStart() == null || orderJobVo.getFortyRQPriceStart().equals("") || orderJobVo.getFortyRQPriceStart().trim().length() == 0) {
//            orderJobVo.setFortyRQPriceStart("0");
//        }
//        if (orderJobVo.getFortyRQPriceEnd() == null || orderJobVo.getFortyRQPriceEnd().equals("0") || orderJobVo.getFortyRQPriceEnd().trim().length() == 0) {
//            orderJobVo.setFortyRQPriceEnd("999999");
//        }
//        return orderJobVo;
//    }
//
//
//    /**
//     * 获取不同类型的商品
//     *
//     * @param instantBookingVoList 全部商品
//     * @param orderJobVo           规格要求
//     * @param type                 商品型号
//     * @return
//     */
//    public List<InstantBookingVo> getTypeData(List<InstantBookingVo> instantBookingVoList, OrderJobVo orderJobVo, String type) {
//        List<InstantBookingVo> okList = new ArrayList<>();
//        List<InstantBookingVo> twentybreakList = new ArrayList<>();
//        InstantBookingVo minPriceInstantBookingVo = new InstantBookingVo();
//        if ("20GP".equals(type)) {
//            minPriceInstantBookingVo = getMinPriceInstantBookingVo(instantBookingVoList, type, orderJobVo.getTwentyGPPriceStart(), orderJobVo.getTwentyGPPriceEnd(), twentybreakList);
//            if (minPriceInstantBookingVo != null) {
//                if(minPriceInstantBookingVo.getInventoryCount() >= Integer.parseInt(orderJobVo.getTwentyGPCount()) ){
//                    minPriceInstantBookingVo.setTwentyGPCount(orderJobVo.getTwentyGPCount());
//                }else{
//                    minPriceInstantBookingVo.setTwentyGPCount(minPriceInstantBookingVo.getInventoryCount().toString());
//                }
//            }
//        } else if ("40GP".equals(type)) {
//            minPriceInstantBookingVo = getMinPriceInstantBookingVo(instantBookingVoList, type, orderJobVo.getFortyGPPriceStart(), orderJobVo.getFortyGPPriceEnd(), twentybreakList);
//            if (minPriceInstantBookingVo != null) {
//                if(minPriceInstantBookingVo.getInventoryCount() >= Integer.parseInt(orderJobVo.getFortyGPCount()) ){
//                    minPriceInstantBookingVo.setFortyGPCount(orderJobVo.getFortyGPCount());
//                }else{
//                    minPriceInstantBookingVo.setFortyGPCount(minPriceInstantBookingVo.getInventoryCount().toString());
//                }
//            }
//        } else if ("40HQ".equals(type)) {
//            minPriceInstantBookingVo = getMinPriceInstantBookingVo(instantBookingVoList, type, orderJobVo.getFortyHQPriceStart(), orderJobVo.getFortyHQPriceEnd(), twentybreakList);
//            if (minPriceInstantBookingVo != null) {
//                if(minPriceInstantBookingVo.getInventoryCount() >= Integer.parseInt(orderJobVo.getFortyHQCount()) ){
//                    minPriceInstantBookingVo.setFortyHQCount(orderJobVo.getFortyHQCount());
//                }else{
//                    minPriceInstantBookingVo.setFortyHQCount(minPriceInstantBookingVo.getInventoryCount().toString());
//                }
//            }
//        } else if ("20RF".equals(type)) {
//            minPriceInstantBookingVo = getMinPriceInstantBookingVo(instantBookingVoList, type, orderJobVo.getTwentyRFPriceStart(), orderJobVo.getTwentyRFPriceEnd(), twentybreakList);
//            if (minPriceInstantBookingVo != null) {
//                if(minPriceInstantBookingVo.getInventoryCount() >= Integer.parseInt(orderJobVo.getTwentyRFCount()) ){
//                    minPriceInstantBookingVo.setTwentyRFCount(orderJobVo.getTwentyRFCount());
//                }else{
//                    minPriceInstantBookingVo.setTwentyRFCount(minPriceInstantBookingVo.getInventoryCount().toString());
//                }
//            }
//        } else if ("40RQ".equals(type)) {
//            minPriceInstantBookingVo = getMinPriceInstantBookingVo(instantBookingVoList, type, orderJobVo.getFortyRQPriceStart(), orderJobVo.getFortyRQPriceEnd(), twentybreakList);
//            if (minPriceInstantBookingVo != null) {
//                if(minPriceInstantBookingVo.getInventoryCount() >= Integer.parseInt(orderJobVo.getFortyRQCount()) ){
//                    minPriceInstantBookingVo.setFortyRQCount(orderJobVo.getFortyRQCount());
//                }else{
//                    minPriceInstantBookingVo.setFortyRQCount(minPriceInstantBookingVo.getInventoryCount().toString());
//                }
//            }
//        }
//        okList.add(minPriceInstantBookingVo);
//        return okList;
//    }
//
//    /**
//     * 获取最小价格商品对象
//     *
//     * @param instantBookingVoList      全部商品
//     * @param type                      商品类型
//     * @param startPrice                开始价格
//     * @param endPrice                  结束价格
//     * @param breakInstantBookingVoList 不甄别的商品
//     * @return
//     */
//    public InstantBookingVo getMinPriceInstantBookingVo(List<InstantBookingVo> instantBookingVoList, String type, String startPrice, String endPrice, List<InstantBookingVo> breakInstantBookingVoList) {
//        //声明最小的价格对象
//        InstantBookingVo minPriceInstantBookingVo = new InstantBookingVo();
//        //第一步：限制价格区间
//        List<InstantBookingVo> firstList = new ArrayList<>();
//        for (InstantBookingVo forInstantBookingVo : instantBookingVoList) {
//            List<RouteProductPricingVo> routeProductPricingList = new ArrayList<>();
//            routeProductPricingList = forInstantBookingVo.getRouteProductPricingList();
//            if (routeProductPricingList != null && !routeProductPricingList.isEmpty() && routeProductPricingList.size() > 0) {
//                for (RouteProductPricingVo forRouteProductPricingVo : routeProductPricingList) {
//                    if (type.equals(forRouteProductPricingVo.getCurrency())) {
//                        if (new BigDecimal(startPrice).compareTo(forRouteProductPricingVo.getTradePrice()) <= 0 && new BigDecimal(endPrice).compareTo(forRouteProductPricingVo.getTradePrice()) >= 0) {
//                            firstList.add(forInstantBookingVo);
//                        }
//                    }
//                }
//            }
//        }
//        //第二步：剔除需要剔除的对象
//        List<InstantBookingVo> secondList = new ArrayList<>();
//        for (InstantBookingVo forInstantBookingVo : firstList) {
//            int num = 0;
//            for (InstantBookingVo breakInstantBookingVo : breakInstantBookingVoList) {
//                if (forInstantBookingVo.getId().equals(breakInstantBookingVo.getId())) {
//                    num++;
//                }
//            }
//            if (num == 0) {
//                secondList.add(forInstantBookingVo);
//            }
//        }
//        //第三步：获取最小的价格对象
//        for (InstantBookingVo forInstantBookingVo : secondList) {
//            List<RouteProductPricingVo> routeProductPricingList = new ArrayList<>();
//            routeProductPricingList = forInstantBookingVo.getRouteProductPricingList();
//            if (routeProductPricingList != null && !routeProductPricingList.isEmpty() && routeProductPricingList.size() > 0) {
//                for (RouteProductPricingVo forRouteProductPricingVo : routeProductPricingList) {
//                    if (type.equals(forRouteProductPricingVo.getCurrency())) {
//                        if ("20GP".equals(type)) {
//                            if (minPriceInstantBookingVo.getTwentyGPPrice() == null || new BigDecimal(minPriceInstantBookingVo.getTwentyGPPrice()).compareTo(forRouteProductPricingVo.getTradePrice()) > 0) {
//                                minPriceInstantBookingVo = forInstantBookingVo;
//                                minPriceInstantBookingVo.setTwentyGPPrice(forRouteProductPricingVo.getTradePrice().toString());
//                            }
//                        } else if ("40GP".equals(type)) {
//                            if (minPriceInstantBookingVo.getFortyGPPrice() == null || new BigDecimal(minPriceInstantBookingVo.getFortyGPPrice()).compareTo(forRouteProductPricingVo.getTradePrice()) > 0) {
//                                minPriceInstantBookingVo = forInstantBookingVo;
//                                minPriceInstantBookingVo.setFortyGPPrice(forRouteProductPricingVo.getTradePrice().toString());
//                            }
//                        } else if ("40HQ".equals(type)) {
//                            if (minPriceInstantBookingVo.getFortyHQPrice() == null || new BigDecimal(minPriceInstantBookingVo.getFortyHQPrice()).compareTo(forRouteProductPricingVo.getTradePrice()) > 0) {
//                                minPriceInstantBookingVo = forInstantBookingVo;
//                                minPriceInstantBookingVo.setFortyHQPrice(forRouteProductPricingVo.getTradePrice().toString());
//                            }
//                        } else if ("20RF".equals(type)) {
//                            if (minPriceInstantBookingVo.getTwentyRFPrice() == null || new BigDecimal(minPriceInstantBookingVo.getTwentyRFPrice()).compareTo(forRouteProductPricingVo.getTradePrice()) > 0) {
//                                minPriceInstantBookingVo = forInstantBookingVo;
//                                minPriceInstantBookingVo.setTwentyRFPrice(forRouteProductPricingVo.getTradePrice().toString());
//                            }
//                        } else if ("40RQ".equals(type)) {
//                            if (minPriceInstantBookingVo.getFortyRQPrice() == null || new BigDecimal(minPriceInstantBookingVo.getFortyRQPrice()).compareTo(forRouteProductPricingVo.getTradePrice()) > 0) {
//                                minPriceInstantBookingVo = forInstantBookingVo;
//                                minPriceInstantBookingVo.setFortyRQPrice(forRouteProductPricingVo.getTradePrice().toString());
//                            }
//                        }
//                    }
//                }
//            }
//        }
//        return minPriceInstantBookingVo;
//    }
//
//
//    /**
//     * 数据合并
//     *
//     * @param twentyGPOkList 20GP商品
//     * @param fortyGPOkList  40GP商品
//     * @param fortyHQOkList  40HQ商品
//     * @return
//     */
//    public List<InstantBookingVo> getMergeData(List<InstantBookingVo> twentyGPOkList, List<InstantBookingVo> fortyGPOkList, List<InstantBookingVo> fortyHQOkList,
//                                               List<InstantBookingVo> twentyRFOkList, List<InstantBookingVo> fortyRQOkList) {
//        List<InstantBookingVo> allData = new ArrayList<>();
//        if (twentyGPOkList != null && twentyGPOkList.size() > 0) {
//            allData.addAll(twentyGPOkList);
//        }
//        if (fortyGPOkList != null && fortyGPOkList.size() > 0) {
//            allData.addAll(fortyGPOkList);
//        }
//        if (fortyHQOkList != null && fortyHQOkList.size() > 0) {
//            allData.addAll(fortyHQOkList);
//        }
//        if (twentyRFOkList != null && twentyRFOkList.size() > 0) {
//            allData.addAll(twentyRFOkList);
//        }
//        if (fortyRQOkList != null && fortyRQOkList.size() > 0) {
//            allData.addAll(fortyRQOkList);
//        }
//
//        for (InstantBookingVo forInstantBookingVo : allData) {
//            if (twentyGPOkList != null && twentyGPOkList.size() > 0) {
//                for (InstantBookingVo twentyInstantBookingVo : twentyGPOkList) {
//                    if (forInstantBookingVo.getId().equals(twentyInstantBookingVo.getId())) {
//                        forInstantBookingVo.setTwentyGPCount(twentyInstantBookingVo.getTwentyGPCount());
//                    }
//                }
//            }
//            if (fortyGPOkList != null && fortyGPOkList.size() > 0) {
//                for (InstantBookingVo fortyHGPInstantBookingVo : fortyGPOkList) {
//                    if (forInstantBookingVo.getId().equals(fortyHGPInstantBookingVo.getId())) {
//                        forInstantBookingVo.setFortyGPCount(fortyHGPInstantBookingVo.getFortyGPCount());
//                    }
//                }
//            }
//            if (fortyHQOkList != null && fortyHQOkList.size() > 0) {
//                for (InstantBookingVo fortyHQInstantBookingVo : fortyHQOkList) {
//                    if (forInstantBookingVo.getId().equals(fortyHQInstantBookingVo.getId())) {
//                        forInstantBookingVo.setFortyHQCount(fortyHQInstantBookingVo.getFortyHQCount());
//                    }
//                }
//            }
//            if (twentyRFOkList != null && twentyRFOkList.size() > 0) {
//                for (InstantBookingVo twentyRFInstantBookingVo : twentyRFOkList) {
//                    if (forInstantBookingVo.getId().equals(twentyRFInstantBookingVo.getId())) {
//                        forInstantBookingVo.setTwentyRFCount(twentyRFInstantBookingVo.getTwentyRFCount());
//                    }
//                }
//            }
//            if (fortyRQOkList != null && fortyRQOkList.size() > 0) {
//                for (InstantBookingVo fortyRQInstantBookingVo : fortyRQOkList) {
//                    if (forInstantBookingVo.getId().equals(fortyRQInstantBookingVo.getId())) {
//                        forInstantBookingVo.setFortyRQCount(fortyRQInstantBookingVo.getFortyRQCount());
//                    }
//                }
//            }
//        }
//        List<InstantBookingVo> returnAllData = new ArrayList<>();
//        for (InstantBookingVo forInstantBookingVo : allData) {
//            int num = 0;
//            for (InstantBookingVo returnForInstantBookingVo : returnAllData) {
//                if (forInstantBookingVo.getId().equals(returnForInstantBookingVo.getId())) {
//                    num++;
//                }
//            }
//            if (num == 0) {
//                returnAllData.add(forInstantBookingVo);
//            }
//        }
//
//        return returnAllData;
//    }
//
//
//
//}
